home *** CD-ROM | disk | FTP | other *** search
- WHAT IS THIS?
- ~~~~~~~~~~~~~
- Shared term allows other users to use the same term connection you are using.
- By environment variables you can disable/enable shared features.
-
- You only need to install shared term on the end that you have users
- who want a shared term connection. However for new commands to work,
- both ends should be running the same term version #.
-
- OK, the following instructions allow you to share your term connection without
- allowing other users direct access to either the account on which term
- was started, or the remote *NIX account. ("chroot", and "denyrsh" just don't
- cut it if users are clever with tupload, or willing to compile their
- own clients. If you don't believe me, let me on your machine.)
-
- If you don't want to use the shared term features, skip the following
- section of this file. Just type follow the instructions in INSTALL.
-
-
- TERM MODES
- ~~~~~~~~~~
-
- There are two basic ways you can install term for sharing. The safest, most
- secure method is as root create a "term" group which contains no members. Then
- as root, install "term" as a SGID program. If this option is not possible,
- then you can install term as a SUID program by installing as an ordinary user.
-
- Here is a table that lists the differences:
-
- Chmod $TERMMODE $TERMDIR -or- Default Connection
- Type $TERMSHARE Owner Users
- ------- --------------- --------------- --------------- ------- ----------------
- u+s 2 (Shared) neither $HOME/term You Anyone
- u+s 0 (Private) $TERMDIR $HOME Anyone Connection Owner
- g+s 1 (Shared) $TERMSHARE /usr/local/lib/term Anyone Anyone
- g+s 0 (Private) $TERMDIR $HOME Anyone Connection Owner
- - 0 (Private) $TERMDIR $HOME Anyone Anyone
-
-
- To install shared term, do the following:
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- 1) (IF YOU ARE ROOT!) Create a "term" group with no members
- by adding the following line in /etc/group:
-
- term::16:root
-
- If 16 is already used by something else, choose an unused GID.
-
-
- 2) Follow the instructions in INSTALL for making and installing your binaries.
-
- 3) To start "term" SHARED mode use:
-
- IF term was installed by ROOT:
- With csh or tcsh:
- setenv TERMMODE 1
- With bash use:
- export TERMMODE=1
- otherwise
- With csh or tcsh:
- setenv TERMMODE 2
- With bash use:
- export TERMMODE=2
-
- NOTE!!! All users who want to take advantage of the shared term
- connection should set the above environment variable.
-
-
- 4) To start clients compiled with term117 or earlier in shared mode.
-
- With TERMMODE=1:
- With csh or tcsh:
- setenv TERMDIR /usr/local/lib/term
- With bash use:
- export TERMDIR=/usr/local/lib/term
- With TERMMODE=2:
- With csh or tcsh
- setenv TERMDIR $HOME/term
- With bash use:
- export TERMDIR=$HOME/term
-
- NOTE!!! All users who want to take advantage of the shared term
- connection should set the above variables.
-
- 5) To run in PRIVATE MODE:
-
- With csh/tcsh:
- setenv TERMMODE 0
- With bash:
- export TERMMODE=0
-
- 6) If you have multiple modems, then you can have more than one connection
- at a time. To specify which connection to use you must start term
- with a server name. i.e.
-
- nohup term -v /dev/modem1 -l /tmp/logfile1 Connection1 &
- nohup term -v /dev/modem2 -l /tmp/logfile2 Connection2 &
-
- then users should set the variable TERMSERVER to the connection name
- they want to use. i.e.
-
- setenv TERMSERVER Connection1
-
- for csh, tcsh, and etc., or
-
- export TERMSERVER=Connection1
-
- for bash, sh, ksh, and etc.
-
-
- PRIVILEGED COMMANDS:
- ~~~~~~~~~~~~~~~~~~~~
-
- The primary differences between the sharable and the unsharable commands are:
- - Sharable commands are SGID (set group id) programs if installed by root
- or SUID (set user id) programs if installed by an ordinary user.
- - The shared "term" directory is controlled by $TERMSHARE instead of
- $TERMDIR
-
- Some programs, even though they may be SUID or SGID, will still only be usable
- by the owner of the term-connection and root. These are known as privileged
- commands. The following clients are privileged.
-
- tupload, trsh, tshutdown
-
- The other term clients:
-
- tmon, txconn, tredir
-
- are available by anyone who can execute the binaries.
-
- If you port program using termnet.h, anything that uses rcmd() will also
- be privileged. Here is a listing of some of these programs:
-
- rlogin, rsh, rcp
-
- Here are some non-privileged programs:
-
- finger, whois, talk, telnet, xarchie, xgopher, ytalk
-
- Basically, if it allows the user to access an account without a password it
- will be privileged.
-
-
- HOW TO MAKE A COMMAND SHARED
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- If you want to make a term command such as termftp or termtelnet shared,
- then do the following, which sets shared group permissions:
-
- IF YOU ARE ROOT:
- chgrp term binary-file
- chmod g+s binary-file
- IF YOU ARE AN ORDINARY USER:
- chmod u+s binary-file
-
-
- SECURITY TEST
- ~~~~~~~~~~~~~
-
- If you are the first to port a program, it would probably pay to double
- check its security when in shared mode.
-
- To test the command try to fork a shell with the command "id". If "id"
- reports:
- '... egid=16(term) ...'
- then you have a security hole.
-
- Also try to overwrite other peoples' files, or create files where you
- don't have write permission.
-
- Here is an example of how I tested "ftp":
-
- % ftp localhost
- Connected to localhost.
- 220 k9 FTP server (Linux k9 1.0.9 #5 Tue Jun 7 12:52:00 EST 1994 i486) ready.
- Name (localhost:bcr): bcr
- Password (localhost:bcr):
- 331 Password required for bcr.
- 230 User bcr logged in.
- Remote system type is UNIX.
- Using binary mode to transfer files.
- ftp> !id
- uid=501(bcr) gid=100(users) groups=100(users)
-
- In this case, this is my user id and group id, so "ftp" passes the test and
- this command is safe.
-
-